package cn.cuiqi.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Configuration;

/**
 * @author: Cuiqi
 * @Description:
 * @Date: 2024/7/27 19:36
 **/
@Data
@ConfigurationProperties(prefix = "thread.pool.executor.config",ignoreInvalidFields = true)
public class ThreadPoolConfigProperties {
    /**
     * 核心线程数
     */
    private Integer corePoolSize = 20;
    /**
     * 最大线程数
     */
    private Integer maxPoolSize = 200;
    /**
     * 最大存活时间
     */
    private Long keepAliveTime = 10L;
    /**
     * 最大队列数
     */
    private Integer blockQueueSize = 5000;

    /**
     * 拒绝策略
     * AbortPolicy：丢弃任务并抛出RejectedExecutionException异常    
     * DiscardPolicy：直接丢弃任务，但不会抛出异常
     * DiscardOldestPolicy：将最早进入队列的任务删除，之后再尝试加入被拒绝的任务    （喜新厌旧）
     * CallerRunsPolicy：如果添加任务失败，主线程自己执行任务
     * 
     */
    private String policy = "AbortPolicy";
}
